2919
12972
Ich habe einen Array-Statistiknamen als
Apfel
X.
Banane
Y.
Kiwi
z
Ich muss Apfel, Banane und Kiwi in ein Array Obst und X, Y und Z in ein Array namens Alphabete setzen.
Irgendein einfacher C # -Mechanismus dafür bitte? 
Verwenden Sie die IEnumerable  .Where Überladung, die den Index liefert.
var obst = statsname.Where ((s, i) => i% 2 == 0) .ToArray ();
var alphabets = statsname.Where ((s, i) => i% 2! = 0) .ToArray ();
|
Gestohlen aus Wie man alternative Elemente mit Enumerable in C # erhält
var obst = myArray.Where ((t, i) => i% 2 == 0) .ToArray ();
var alphabets = myArray.Where ((t, i) => i% 2 == 1) .ToArray ();
|
Wenn ich verstanden habe, dass Sie richtig fragen, was Sie wollen, ist sehr einfach:
Sie möchten Früchte in eine Reihe von Früchten und die gleichen für Alphabete einfügen, und sie werden alternativ in einer Reihe von Statistiknamen angezeigt, also:
für (int i = 0, j = 0; i  list = new List  () {"Apfel", "X", "Banane", "Y", "Kiwi", "z"};
var result = list.Select ((l, i) => new {l, i})
.GroupBy (p => p.i% 2)
.Select (x => x.Select (v => v.l) .ToList ())
.Auflisten();
Dann haben Sie eine Liste von Listen:
|
list  obst = new List  ();
list  alphabet = new List  ();
für (int i = 0; i  everyOther  (IEnumerable  -Sammlung)
{
using (var e = collection.GetEnumerator ()) {
while (e.MoveNext ()) {
Rendite Rendite e.Current;
e.MoveNext (); // eins überspringen
}}
}}
}}
Mit System.Linq.Skip können Sie das erste Element überspringen.
string [] words = "Apfel X Banane Y Kiwi z" .Split ();
var Früchte = alle anderen (Wörter);
var alphabets = everyOther (words.Skip (1));
Verwenden Sie sie einfach als neue Sammlung oder rufen Sie .ToArray () oder .ToList () auf:
foreach (String f in Früchten)
Console.WriteLine (f);
string [] anArray = obst.ToArray (); // mit System.Linq
Jetzt haben Sie was Sie brauchen.
Iteratoren sind Methoden, die eine Rendite erzielen, siehe Iteratoren (C # -Programmierhandbuch). Dies ist ein sehr starkes Merkmal der Sprache. Sie können:
Elemente überspringen
Elemente dekorieren
Bestellung ändern
Sequenzen verketten (siehe System.Linq.Concat)
...
|
Hier ist ein Arbeitscode, der Ihnen hoffentlich weiterhelfen wird:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
Namespace ReadFile
{
Klassenprogramm
{
statische Leere ReadFile (Zeichenfolge filePath, List  custumerNames, List  phoneNumbers)
{
string line = string.Empty;
var fileStream = neuer StreamReader (filePath);
bool isPhoneNumber = true;
while ((line = fileStream.ReadLine ())! = null)
{
if (isPhoneNumber)
{
phoneNumbers.Add (Convert.ToInt32 (Zeile));
isPhoneNumber = false;
}}
sonst
{
custumerNames.Add (Zeile);
isPhoneNumber = true;
}}
}}
fileStream.Close ();
}}
statische Leere Main (string [] args)
{
Console.WriteLine ("Begonnen, die Datei zu lesen ...");
List  custumersNamesList = new List  ();
List  custumersPhonesNumbers = new List  ();
ReadFile ("SampleFile.txt", custumersNamesList, custumersPhonesNumbers);
// Angenommen, beide Listen haben dieselbe Länge.
for (int i = 0; i